package com.ip.user.mapper;

import com.ip.user.models.vo.SysUserGroupRelVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户与用户组关系Mapper接口
 */
@Mapper
public interface SysUserGroupRelMapper {
    
    /**
     * 插入用户与用户组关系
     * @param userGroupRelVO 用户与用户组关系VO对象
     * @return 影响行数
     */
    int insertUserGroupRel(SysUserGroupRelVO userGroupRelVO);
    
    /**
     * 根据用户ID和用户组ID查询关系
     * @param userId 用户ID
     * @param groupId 用户组ID
     * @return 用户与用户组关系VO对象
     */
    SysUserGroupRelVO selectUserGroupRel(@Param("userId") Integer userId, @Param("groupId") Integer groupId);
    
    /**
     * 根据用户ID查询用户组关系列表
     * @param userId 用户ID
     * @return 用户与用户组关系VO列表
     */
    List<SysUserGroupRelVO> selectUserGroupRelsByUserId(Integer userId);
    
    /**
     * 根据用户组ID查询用户关系列表
     * @param groupId 用户组ID
     * @return 用户与用户组关系VO列表
     */
    List<SysUserGroupRelVO> selectUserGroupRelsByGroupId(Integer groupId);
    
    /**
     * 删除用户与用户组关系
     * @param relId 关系ID
     * @return 影响行数
     */
    int deleteUserGroupRel(Integer relId);
    
    /**
     * 根据用户ID和用户组ID删除关系
     * @param userId 用户ID
     * @param groupId 用户组ID
     * @return 影响行数
     */
    int deleteUserGroupRelByUserAndGroup(@Param("userId") Integer userId, @Param("groupId") Integer groupId);
    
    /**
     * 根据用户ID删除所有用户组关系
     * @param userId 用户ID
     * @return 影响行数
     */
    int deleteUserGroupRelByUserId(Integer userId);
}